<?php 
/**
* teacher管理组卷的入口
*/
class Teacher_module extends CI_Controller
{
    
    function __construct()
    {
        parent::__construct();
        //登陆状态检测
        if(!$this->session->userdata('r_user_in'))
            redirect('home');
        //权限检测
        if($this->session->userdata('r_role_id') != 2)
            redirect('home');
    }

    function index()
    {
        //准备数据
        $this->load->model('module_model');
        $this->load->model('teacher_model');
        $me=$this->teacher_model->get_by_username($this->session->userdata('r_username'));
        $data['modules']=$this->module_model->get_modules_by_teacher_id($me['id']);

        $data['title']='组卷';
        $this->load->view('teacher_module/index',$data);

    }

    /**
     * 查看一个模块
     * @param  integer $id [description]
     * @return [type]      [description]
     */
    function check($id=0)
    {
        $this->load->model('module_model');
        $module=$this->module_model->get_module_by_id($id);
        if(!$module)
            return $this->load->view('error');
        $data['title']='查看模块';
        $data['module']=$module;
        $data['relative_test_points']=$this->module_model->get_relative_test_point($module['id']);

        $this->load->view('teacher_module/check',$data);


    }

    /**
     * 编辑一个模块
     * @param  [type] $id [description]
     * @return [type]     [description]
     */
    function edit($id=0)
    {
        if($id)
        {
            //get方法
            $this->load->model('module_model');
            $module=$this->module_model->get_by_id($id);
            if(!$module)
                return $this->load->view('error');
            $data['title']='编辑模块';
            $data['module']=$module;

            $this->load->model('test_point_model');
            if($module['type']==0)
                $data['test_points']=$this->module_model->get_relative_test_point($module['id']);
            else
                $data['test_points']=$this->module_model->get_relative_test_point($module['parent_id']);
            
            $data['relative_test_points']=$this->module_model->get_relative_test_point($module['id']);

            $this->load->view('teacher_module/edit',$data);
        }
        else
        {
            //读取数据
            $this->load->model('module_model');
            $id=$this->input->post('module_id');
            $module=$this->module_model->get_by_id($id);
            if(!$module)
                return $this->load->view('error');

            if($this->form_validation->run('teacher_module/edit'))
            {

                //post方法
                $name=$this->input->post('module_name');
                $time_limit=$this->input->post('module_time_limit');
                $type=1;
                $relative_test_points=$this->input->post('relative_test_points');

                $this->load->model('teacher_model');
                $me=$this->teacher_model->get_by_username($this->session->userdata('r_username'));
                if($module['type']==1)
                {
                    //如果是自定义类型，做更新操作
                    //将模块写入数据库
                    $item = array(
                        'name' => $name,
                        'time_limit' => $time_limit,
                        'type' => $type,
                         );
                
                    //数据库操作
                    if($this->module_model->delete_relative_test_point($id)&&
                        $this->module_model->add_relative_test_point($id,$relative_test_points)&&
                        $this->module_model->update($id,$item)  
                        )
                    {
                        $this->session->set_flashdata('message','操作成功');
                        redirect('teacher_module/index');   
                    }
                    else
                    {
                        $this->session->set_flashdata('message','操作失败');
                        redirect('teacher_module/index');   
                    }
                }
                else
                {
                    //如果是系统模块，做新建操作
                    $item = array(
                        'name' => $name,
                        'time_limit' => $time_limit,
                        'type' => $type,
                        'parent_id'=>$module['id'],
                        'teacher_id'=>$me['id'],
                        'module_sort'=>$module['module_sort']
                         );
                    $this->load->model('module_model');

                    if($this->module_model->add($item))
                    {
                        $module_id=$this->db->insert_id();
                        //添加模块和考点的关系
                        if($this->module_model->add_relative_test_point($module_id,$relative_test_points))
                        {
                            $this->session->set_flashdata('message','操作成功');
                            redirect('teacher_module/index');       
                        }
                    }
                    $this->session->set_flashdata('message','操作失败');
                    redirect('teacher_module/index');
                    
                    
                }
                
            }
            else
            {
                //验证失败
                //get方法
                $data['title']='编辑模块';
                $data['module']=$module;

                $this->load->model('test_point_model');
                $data['test_points']=$this->test_point_model->get_all();
                
                $data['relative_test_points']=$this->module_model->get_relative_test_point($module['id']);

                $this->load->view('admin_module/edit',$data);
            }
        } 
    }

    /**
     * 老师删除一个自定义模块
     * @param  [type] $id [description]
     * @return [type]     [description]
     */
    function delete($id)
    {
        $this->load->model('module_model');
        $module=$this->module_model->get_by_id($id);
        if(!$module)
            return $this->load->view('error');
        //如果是系统类型的模块（考卷），阻止删除
        if($module['type']==0)
            return $this->load->view('error');

        if($this->module_model->delete_cascade($id))
            $this->session->set_flashdata('message','操作成功');
        else
            $this->session->set_flashdata('message','存在相关引用，操作失败');

        redirect('teacher_module/index');

    }
}
 